/* eslint-disable */
/**显示字段统一处理显示，将覆盖数据视图、报表配置的显示字段
 *  数据视图【列表、查询区域表格已统一处理】
 *  报表【列表、打印，导出已统一处理（后台utilFieldMap.java类）】
 *  表单打印：【打印已经处理】
 *  编辑页面  使用  :label="utilFieldMap.show('skuPrice')"
 *      已处理列表
 *      基础数据
 *          耗材列表
 *              编辑界面
 *          耗材维护
 *              编辑界面
 */
//显示字段名称
const showMap = {
  //品名
  matrName: '商品名称',
  //品规
  matrSpec: '商品规格',
  spec: '商品规格',
  categoryName: '管理分类',
  supplierId: '供应商名称',
  spName: '供应商名称',
  mfgName: '生产厂家',
  mfgId: '生产厂家',
  hrpCode: '商品编码',
  baseType: '商品分类',
  //品规
  matrModel: '型号',
  //单品单位
  skuUnit: '单品单位',
  //单品数量
  skuQty: '单品数量',
  //单品价格
  skuPrice: '单品价格',
  //包装单位
  packageUnit: '包装单位',
  //包装数量
  packageQty: '包装数量',
  rfid: 'RFID',
  sn: 'SN',
  udi: 'UDI-DI',
  //集中采购字段
  flagCenterPurchase: '常备耗材',
  flagOmoc: '标签管理',

  //其他字段
}


const utilFieldMap = {
  /**
   * @Description：显示字段格式化
   * @param field  字段
   * @param oldShow  字段原始显示内容
   * @param type  类型
   * @param typeKey  类型值
   * @param preIfHit  替换后需要追加的前缀
   */
  show(field, oldShow, type, typeKey, preIfHit) {
    //特殊字段
    if (type && type == 'dataview') {
      //耗材列表
      if (typeKey == 'base_matr' && field == 'name') return showMap.matrName
      //耗材维护
      if (typeKey == 'base_matr_edit' && field == 'name') return showMap.matrName
      //耗材列表
      if (typeKey == 'base_matr' && field == 'spec') return showMap.matrSpec
      //耗材维护
      if (typeKey == 'base_matr_edit' && field == 'spec') return showMap.matrSpec  //耗材维护
      //耗材列表
      if (typeKey == 'base_matr' && field == 'model') return showMap.matrModel
      //耗材维护
      if (typeKey == 'base_matr_edit' && field == 'model') return showMap.matrModel
      // 科室相关视图
      if (typeKey.indexOf('base_dept') != -1 && ['hrpCode'].includes(field)) return oldShow


      if (typeKey == 'wm_dist_item' && field == 'skuQty') return oldShow
      if (typeKey == 'dept_apply_item_applydemand' && field == 'packageQty') return oldShow
    }

    if (field && field.toUpperCase() == 'RFID') return showMap.rfid
    if (field && field.toUpperCase() == 'SN') return showMap.sn
    if (field && field.toUpperCase() == 'UDI') return showMap.udi

    let fildShowHit = null
    Object.keys(showMap).forEach(key => {
      if (fildShowHit) return false
      if (global.strings.camelCase(field) == key) fildShowHit = showMap[key]
    })
    if (fildShowHit && preIfHit) fildShowHit = preIfHit + fildShowHit
    return fildShowHit ? fildShowHit : oldShow
  },
  /**
   * @Description：显示值 格式化
   * @param fieldName  字段
   * @param oldValue  字段原始值
   * @param type  类型
   * @param typeKey  类型值
   * @param currentRow  当前行信息
   */
  value(fieldName, oldValue, type, typeKey, currentRow) {
    if (!fieldName) {
      fieldName = ''
    }
    let field = fieldName.toLowerCase()
    if (type == 'dataview') {
      if (typeKey && typeKey.indexOf('dept_return') != -1 && field.indexOf("amount") != -1) return global.utilNum.toFixed(oldValue * -1)
      if (typeKey && typeKey.indexOf('dept_return') != -1 && field.indexOf("qty") != -1) return global.utilNum.toFixed(oldValue * -1)
      if (typeKey && currentRow && currentRow.flagUseRedType
        && currentRow.flagUseRedType == 1 && field.indexOf("amount") != -1) return global.utilNum.toFixed(oldValue * -1)

      if (field.indexOf("price") != -1) return global.utilNum.toFixed(oldValue)
      if (field.indexOf("amount") != -1) return global.utilNum.toFixed(oldValue)
    }

    if (type == 'report') {

      if (field.indexOf("price") != -1) return global.utilNum.toFixed(oldValue, 3)
      if (field.indexOf("amount") != -1) return global.utilNum.toFixed(oldValue, 2)

    }
    return oldValue
  },
  /**
   * @Description： dataviwe 行编辑时，需要忽略校验的
   * @param viewKey  视图标识
   * @param fieldName  字段
   */
  rowEditInputIgnore(viewKey, fieldName) {
    console.log('rowEditInputIgnore',viewKey, fieldName )
    let field = fieldName.toLowerCase()
    if (viewKey == 'dept_return_item' && fieldName == 'skuqty') { //科室退库明细视图，单品数量编辑
      return true
    }

    if (viewKey == 'wm_in_order_item_inasn' && field == 'packageqty') { //采购入库明细包装数量
      return true
    }
    if (viewKey == 'wm_in_order_item' && field == 'packageqty') { //手动入库明细包装数量
      return true
    }
    if (viewKey == 'wm_in_order_item_inasn' && field == 'packageqty') { //手动入库明细包装数量
      return true
    }
    return false
  },

  /**
   * @Description： 根据系统配置初始化显示字段
   *   示例  global.utilFieldMap.replaceSystemWebFieldShowMap(this, 'editForm', 'process')
   *   根据 system_web_field_show 字段关系 查找表单中 prop对应的字段显示名称
   * @param that    局部对象
   * @param viewForm  表单对象标识
   * @param key  表单标识
   */
  replaceSystemWebFieldShowMap(that, viewForm, key) {
    setTimeout(() => {
      let textOld
      Object.keys(showMap).forEach(key => {
        if ($(that.$refs[viewForm].$el).find('[for="' + key + '"]').length > 0) {
          textOld = $(that.$refs[viewForm].$el).find('[for="' + key + '"]').text()
          $(that.$refs[viewForm].$el).find('[for="' + key + '"]').text(global.utilFieldMap.show(key, textOld, 'form', key))
        }
      })
    }, 1000)
  }
}

export default utilFieldMap
